<!DOCTYPE html>
<html prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#
" lang="zh_cn">
<head>
<meta charset="utf-8">
<meta name="description" content="vitamind3的杂货铺，输入的是草，输出的是奶">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>vitamind3 竹里馆</title>
<link href="assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
<link href="assets/css/ipython.min.css" rel="stylesheet" type="text/css">
<link href="assets/css/nikola_ipython.css" rel="stylesheet" type="text/css">
<meta name="theme-color" content="#5670d4">
<meta name="generator" content="Nikola (getnikola.com)">
<link rel="alternate" type="application/rss+xml" title="RSS" hreflang="zh_cn" href="rss.xml">
<link rel="canonical" href="https://vitamind3.gitee.io/">
<link rel="next" href="index-1.html" type="text/html">
<!--[if lt IE 9]><script src="assets/js/html5.js"></script><![endif]--><link rel="prefetch" href="posts/shang-hai-yi-qing-shu-ju-ke-shi-hua/" type="text/html">
</head>
<body>
<a href="#content" class="sr-only sr-only-focusable">跳到主内容</a>

<!-- Menubar -->

<nav class="navbar navbar-expand-md static-top mb-4
navbar-dark
bg-dark
"><div class="container">
<!-- This keeps the margins nice -->
        <a class="navbar-brand" href=".">

            <span id="blog-title">vitamind3 竹里馆</span>
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#bs-navbar" aria-controls="bs-navbar" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>

        <div class="collapse navbar-collapse" id="bs-navbar">
            <ul class="navbar-nav mr-auto">
<li class="nav-item">
<a href="pages/introduction" class="nav-link">欢迎</a>
                </li>
<li class="nav-item">
<a href="archive.html" class="nav-link">文章归档</a>
                </li>
<li class="nav-item">
<a href="categories/" class="nav-link">分类</a>
                </li>
<li class="nav-item">
<a href="rss.xml" class="nav-link">RSS 源</a>

                
            </li>
</ul>
<ul class="navbar-nav navbar-right"></ul>
</div>
<!-- /.navbar-collapse -->
    </div>
<!-- /.container -->
</nav><!-- End of Menubar --><div class="container" id="content" role="main">
    <div class="body-content">
        <!--Body content-->
        
        
        

    


    
<div class="postindex">
    <article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/shang-hai-yi-qing-shu-ju-ke-shi-hua/" class="u-url">上海疫情数据可视化</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/shang-hai-yi-qing-shu-ju-ke-shi-hua/" rel="bookmark">
            <time class="published dt-published" datetime="2022-04-28T23:00:00+08:00" itemprop="datePublished" title="2022-04-28 23:00">2022-04-28 23:00</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="%E4%B8%8A%E6%B5%B7%E7%96%AB%E6%83%85%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96">上海疫情数据可视化<a class="anchor-link" href="posts/shang-hai-yi-qing-shu-ju-ke-shi-hua/#%E4%B8%8A%E6%B5%B7%E7%96%AB%E6%83%85%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96">¶</a>
</h2>
<h3 id="%E7%AE%80%E8%A6%81%E8%AF%B4%E6%98%8E">简要说明<a class="anchor-link" href="posts/shang-hai-yi-qing-shu-ju-ke-shi-hua/#%E7%AE%80%E8%A6%81%E8%AF%B4%E6%98%8E">¶</a>
</h3>
<ul>
<li>数据来源：<a href="https://wsjkw.sh.gov.cn/yqtb/index.html">疫情通报_上海市卫生健康委员会</a><ul>
<li>本文所使用的数据截止到4.28日。</li>
</ul>
</li>
<li>编程工具：<ul>
<li>Python3</li>
<li>cufflinks</li>
<li>numpy</li>
<li>pandas</li>
</ul>
</li>
<li>本文原始格式为ipynb，在本地可看到交互图像，但经nikola转为静态网站后看不到。如果大家有兴趣，可在B站看相关视频。<ul><li>
<a href="https://www.bilibili.com/video/BV1T3411K72K">Python可视化上海疫情数据（更新至4.28日）</a><p class="more"><a href="posts/shang-hai-yi-qing-shu-ju-ke-shi-hua/">阅读更多…</a></p>
</li></ul>
</li>
</ul>
</div>
</div>
</div>
    </div>
    </article><article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/tui-jian-wang-pan-tong-bu-pan-shu-ju-jia-mi-gong-ju-restic/" class="u-url">推荐网盘同步盘数据加密工具restic</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/tui-jian-wang-pan-tong-bu-pan-shu-ju-jia-mi-gong-ju-restic/" rel="bookmark">
            <time class="published dt-published" datetime="2022-04-23T10:41:13+08:00" itemprop="datePublished" title="2022-04-23 10:41">2022-04-23 10:41</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div>
<p>去年一直用的OneDrive做数据同步，但今年初OneDrive抽风了几次，于是又换回了国内的网盘。国内免费的支持同步功能的网盘挺多，这里不一一介绍。用国内网盘的优点是网络稳定，但数据安全方面并没有提供额外保障。 所以我又找了一款软件做数据加密，就是 restic 。</p>
<p class="more"><a href="posts/tui-jian-wang-pan-tong-bu-pan-shu-ju-jia-mi-gong-ju-restic/">阅读更多…</a></p>
</div>
    </div>
    </article><article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/shi-yong-c-interactivejiao-hu-shi-yun-xing-cdai-ma-shi-li/" class="u-url">使用C# Interactive交互式运行C#代码</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/shi-yong-c-interactivejiao-hu-shi-yun-xing-cdai-ma-shi-li/" rel="bookmark">
            <time class="published dt-published" datetime="2022-04-19T11:08:30+08:00" itemprop="datePublished" title="2022-04-19 11:08">2022-04-19 11:08</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="%E4%BD%BF%E7%94%A8C%23-Interactive%E4%BA%A4%E4%BA%92%E5%BC%8F%E8%BF%90%E8%A1%8CC%23%E4%BB%A3%E7%A0%81">使用C# Interactive交互式运行C#代码<a class="anchor-link" href="posts/shi-yong-c-interactivejiao-hu-shi-yun-xing-cdai-ma-shi-li/#%E4%BD%BF%E7%94%A8C%23-Interactive%E4%BA%A4%E4%BA%92%E5%BC%8F%E8%BF%90%E8%A1%8CC%23%E4%BB%A3%E7%A0%81">¶</a>
</h2>
<h3 id=".NET-Interactive-Notebooks">.NET Interactive Notebooks<a class="anchor-link" href="posts/shi-yong-c-interactivejiao-hu-shi-yun-xing-cdai-ma-shi-li/#.NET-Interactive-Notebooks">¶</a>
</h3>
<p>一些脚本语言例如Python可以在控制台进行REPL交互操作，能快速的执行一些命令。以前执行C#每次都最需要创建一个新项目，略显烦琐。
但现在可以通过 Visual Studio Code 的 .NET Interactive Notebooks 插件方便的在VSCode 中交互式的使用C#代码，非常易于快速的测试一些功能。</p>
<p class="more"><a href="posts/shi-yong-c-interactivejiao-hu-shi-yun-xing-cdai-ma-shi-li/">阅读更多…</a></p>
</div>
</div>
</div>
    </div>
    </article><article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/tiao-zhan-1xiao-shi-pythonbian-ma-ti-qu-he-suan-bao-gao-shu-ju/" class="u-url">挑战1小时python编码提取核酸报告数据</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/tiao-zhan-1xiao-shi-pythonbian-ma-ti-qu-he-suan-bao-gao-shu-ju/" rel="bookmark">
            <time class="published dt-published" datetime="2022-04-10T23:41:41+08:00" itemprop="datePublished" title="2022-04-10 23:41">2022-04-10 23:41</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div>
<p>最近因上海疫情原因封闭在家，周末虽然是休息，但也不能出门，知乎刷到一个问题：<a href="https://www.zhihu.com/question/526743020/answer/2430321458">复旦博士开发小程序，2 分钟核对 800 幅核酸截图助力防控，疫情中你在哪个瞬间体会到了知识的力量？ - 知乎</a> 。没弄过OCR类的项目，感觉应该不难，手痒就决定挑战下1小时python编码提取核酸报告数据。</p>
<p>知乎原问题截图：</p>
<p class="more"><a href="posts/tiao-zhan-1xiao-shi-pythonbian-ma-ti-qu-he-suan-bao-gao-shu-ju/">阅读更多…</a></p>
</div>
    </div>
    </article><article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/tui-jian-qi-yong-cte-xing-nullable-reference-types/" class="u-url">推荐启用C#特性Nullable reference types</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/tui-jian-qi-yong-cte-xing-nullable-reference-types/" rel="bookmark">
            <time class="published dt-published" datetime="2022-03-31T21:12:35+08:00" itemprop="datePublished" title="2022-03-31 21:12">2022-03-31 21:12</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div>
<p>在最近半年上了新项目后开始用上了C# 8.0的新特性 Nullable reference types 。挺有意思的，记录一下。</p>
<p>官方文档见 <a href="https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references">Nullable reference types | Microsoft Docs</a> 。Nullable reference types 是给开发者使用的工具，开发者能用来标记引用类型是否可为null，编译器会对这些类型进行检查 ，如果有赋null值的情况，就产生警告。这依然是静态类型语言的优点，即能在编译期尽可能多的排除潜在的问题。</p>
<p class="more"><a href="posts/tui-jian-qi-yong-cte-xing-nullable-reference-types/">阅读更多…</a></p>
</div>
    </div>
    </article><article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/zi-dong-sheng-cheng-lei-shi-xian-jie-kou/" class="u-url">自动生成类实现接口</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/zi-dong-sheng-cheng-lei-shi-xian-jie-kou/" rel="bookmark">
            <time class="published dt-published" datetime="2022-03-29T23:52:08+08:00" itemprop="datePublished" title="2022-03-29 23:52">2022-03-29 23:52</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div>
<p>最近在一个 C# .net 6 项目里实现了一个功能，即自动生成类实现接口。</p>
<p class="more"><a href="posts/zi-dong-sheng-cheng-lei-shi-xian-jie-kou/">阅读更多…</a></p>
</div>
    </div>
    </article><article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/tui-jian-fodyku/" class="u-url">推荐fody库</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/tui-jian-fodyku/" rel="bookmark">
            <time class="published dt-published" datetime="2022-03-26T22:31:46+08:00" itemprop="datePublished" title="2022-03-26 22:31">2022-03-26 22:31</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div>
<p>最近两年在C#项目里广泛的使用了fody库，感觉挺不错，这里做个推荐。简单说Fody的功能是在<strong>编译</strong>阶段修改生成的IL代码，添加一些功能。</p>
<ul>
<li>主页：<a href="https://github.com/Fody/Fody">GitHub - Fody/Fody: Extensible tool for weaving .net assemblies</a> 。</li>
<li>能添加哪些功能呢？看这里 <a href="https://github.com/Fody/Home/blob/master/pages/addins.md">Home/addins.md at master · Fody/Home · GitHub</a> 。</li>
</ul>
<p>其中一些我经常用到的扩展说明一下：</p>
<p class="more"><a href="posts/tui-jian-fodyku/">阅读更多…</a></p>
</div>
    </div>
    </article><article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/fa-bu-obsidiancang-ku-mo-ban-02ban/" class="u-url">发布obsidian仓库模板0.2版</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/fa-bu-obsidiancang-ku-mo-ban-02ban/" rel="bookmark">
            <time class="published dt-published" datetime="2022-03-12T22:57:26+08:00" itemprop="datePublished" title="2022-03-12 22:57">2022-03-12 22:57</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div>
<p>地址：<a href="https://gitee.com/vitamind3/obsidian-vault-boilerplate">obsidian-vault-boilerplate: obsidian valut 初始化模板</a> 。</p>
<h2>boilerplate vault模板说明</h2>
<p>obsidian-vault-boilerplate 是一个打包的 obsidian  文件夹，提供了一些初始的obsidian配置及插件，方便快速的新建一个obsidian vault。</p>
<p>当前版本发布日期：[[2022-03-12]] 。</p>
<p class="more"><a href="posts/fa-bu-obsidiancang-ku-mo-ban-02ban/">阅读更多…</a></p>
</div>
    </div>
    </article><article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/shi-yong-iobrokerkuai-su-da-jian-wu-lian-wang-ying-yong/" class="u-url">使用iobroker快速搭建物联网应用</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/shi-yong-iobrokerkuai-su-da-jian-wu-lian-wang-ying-yong/" rel="bookmark">
            <time class="published dt-published" datetime="2022-02-13T23:11:00+08:00" itemprop="datePublished" title="2022-02-13 23:11">2022-02-13 23:11</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div>
<p>在做物联网类项目的时候，经常会有一些需求，即是短时间内针对一个特定场景做一个小的DEMO或演示。这类任务的典型特征是时间紧、任务重、需求还挺多变，能拿到的资源（你懂的）也有限。直接从头撸代码不是不可以，但是性价比极低。在这个时候，iobroker就非常好用了。</p>
<p class="more"><a href="posts/shi-yong-iobrokerkuai-su-da-jian-wu-lian-wang-ying-yong/">阅读更多…</a></p>
</div>
    </div>
    </article><article class="h-entry post-text" itemscope="itemscope" itemtype="http://schema.org/Article"><header><h1 class="p-name entry-title"><a href="posts/obsidiancang-ku-mo-ban/" class="u-url">obsidian仓库模板</a></h1>
        <div class="metadata">
            <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
                vitamind3
            </span></p>
            <p class="dateline">
            <a href="posts/obsidiancang-ku-mo-ban/" rel="bookmark">
            <time class="published dt-published" datetime="2022-02-11T23:06:13+08:00" itemprop="datePublished" title="2022-02-11 23:06">2022-02-11 23:06</time></a>
            </p>
        </div>
    </header><div class="p-summary entry-summary">
    <div>
<p>开了一个项目 <a href="https://gitee.com/vitamind3/obsidian-vault-boilerplate">obsidian-vault-boilerplate: obsidian valut 初始化模板。</a> 。</p>
<h3>obsidian-vault-boilerplate</h3>
<p>obsidian-vault-boilerplate 是一个打包的 obsidian  文件夹，提供了一些初始的obsidian配置及插件，方便快速的新建一个obsidian vault。</p>
<p>当前版本发布日期：[[2022-02-11]] 。</p>
<p class="more"><a href="posts/obsidiancang-ku-mo-ban/">阅读更多…</a></p>
</div>
    </div>
    </article>
</div>

        <ul class="pager postindexpager clearfix">
<li class="next"><a href="index-1.html" rel="next">以前的文章</a></li>
        </ul>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML" integrity="sha384-3lJUsx1TJHt7BA4udB5KPnDrlkO8T6J6v/op7ui0BbCjvZ9WqV4Xm6DTP6kQ/iBH" crossorigin="anonymous"></script><script type="text/x-mathjax-config">
        MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});
        </script><!--End of body content--><footer id="footer">
            Contents ©         <a href="https://vitamind3.gitee.io/">vitamind3</a> - Powered by         <a href="https://getnikola.com" rel="nofollow">Nikola</a>         
            
            
        </footer>
</div>
</div>


        <script src="assets/js/all-nocdn.js"></script><script>
    baguetteBox.run('div#content', {
        ignoreClass: 'islink',
        captions: function(element){var i=element.getElementsByTagName('img')[0];return i===undefined?'':i.alt;}});
    </script><script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?09027755f7478e129aec2cdd3acf9a4c";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>
